﻿#region Copyright Notice

// 
// 
//  
//  Copyright (c) 2009-2011 Anindya Chatterjee
//  
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//  
//      http://www.apache.org/licenses/LICENSE-2.0
//  
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
// 
// 

#endregion

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Xml.Serialization;

namespace AbstractClass.LiveUpdate
{
    [XmlRoot("ApplicationDefinition")]
    public class ApplicationDefinition : IXObject
    {
        [XmlElement("ApplicationName")]
        public string ApplicationName { get; set; }

        [XmlElement("Version")]
        public string Version { get; set; }

        [XmlElement("UpdateUrl")]
        public string UpdateUrl { get; set; }

        [XmlElement("Suppress")]
        public string Suppress { get; set; }

        [XmlIgnore]
        public Bitmap Icon { get; set; }

        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        [XmlElement("Icon")]
        public byte[] LargeIconSerialized
        {
            get
            {
                try
                {
                    if (Icon == null)
                        return null;
                    using (var ms = new MemoryStream())
                    {
                        Icon.Save(ms, ImageFormat.Png);
                        return ms.ToArray();
                    }
                }
                catch (Exception)
                {
                    return null;
                }
            }
            set
            {
                try
                {
                    if (value == null)
                    {
                        Icon = null;
                    }
                    else
                    {
                        using (var ms = new MemoryStream(value))
                        {
                            Icon = new Bitmap(ms);
                        }
                    }
                }
                catch (Exception)
                {
                    return;
                }
            }
        }

        #region IXObject Members

        string IXObject.DefaultNamespace { get; set; }

        XmlSerializerNamespaces IXObject.XmlNamespaceCollection { get; set; }

        void IXObject.Init()
        {
        }

        void IXObject.Close()
        {
        }

        #endregion
    }
}